package com.ym.medical.service;

import com.ym.common.constant.DictEnum;
import com.ym.core.utils.tkmybatis.IBaseSV;
import com.ym.medical.domain.entity.SysDictEntity;
import com.ym.medical.domain.param.SysDictQueryParam;
import com.ym.medical.domain.param.SysDictUpdateParam;
import com.ym.medical.domain.vo.SysDictListPcVO;
import com.ym.medical.enums.DividedRateEnum;

import java.util.List;
import java.util.Map;

/**
 * 字典Service接口
 *
 * @author ym
 * @date 2020-08-17
 */
public interface ISysDictSV extends IBaseSV<SysDictEntity> {

	/**
	 * 查询字典列表
	 *
	 * @param queryParam 字典 查询对象
	 * @return 字典集合
	 */
	List<SysDictListPcVO> selectListPC(SysDictQueryParam queryParam);


	/**
	 * 新增字典
	 *
	 * @param updateParam 字典 新增对象
	 * @return 结果
	 */
	Long insertPC(SysDictUpdateParam updateParam);

	/**
	 * 修改字典
	 *
	 * @param updateParam 字典 修改参数
	 * @return 结果
	 */
	int updateByIdPC(SysDictUpdateParam updateParam);

	/**
	 * 根据Key获取数据字典的一个值
	 *
	 * @param dictCode 字典的枚举dictCode
	 * @param itemCode 字典的值itemCode
	 * @return
	 */
	String getDictValue(Class<? extends DictEnum> dictCode, String itemCode);

	/**
	 * 根据Key获取数据字典的一个值
	 *
	 * @param dictCode 字典的枚举dictCode
	 * @param itemCode 字典的枚举itemCode
	 * @return
	 */
	String getDictValue(Class<? extends DictEnum> dictCode, DictEnum itemCode);

	/**
	 * 根据Key获取数据字典的一个值
	 *
	 * @param dictCode 字典的枚举dictCode
	 * @param itemCode 字典的值itemCode
	 * @return
	 */
	String getDictValue(String dictCode, String itemCode);

	/**
	 * 查询字典
	 *
	 * @param dictCode
	 * @return
	 */
	List<SysDictEntity> getDictValues(String dictCode);

	/**
	 * 查询字典
	 *
	 * @param dictCode
	 * @return
	 */
	List<SysDictEntity> getDictValues(Class<? extends DictEnum> dictEnum);

	/**
	 * 查询字典
	 *
	 * @param dictCode
	 * @return
	 */
	Map<String, String> getDictValuesToMap(String dictCode);

	/**
	 * 查询字典
	 *
	 * @param dictCode
	 * @return
	 */
	Map<String, String> getDictValuesToMap(Class<? extends DictEnum> dictEnum);

	/**
	 * 医生预约时间表字典查询
	 *
	 * @return
	 */
    List<SysDictEntity> getTimeTable(Long docServId);

	/**
	 * 数据字典省份查询
	 *
	 * @return
	 */
    List<SysDictEntity> selectDictProv();

    List<SysDictEntity> getCodeAndDesc(Class<DividedRateEnum> dividedRateEnumClass);

	/**
	 * 安级别和对应编码查询 市/县/镇/村
	 *
	 * @param itemLevel
	 * @param itemCode
	 * @return
	 */
	List<SysDictEntity> selectByLevelAndCode(int itemLevel, String itemCode);
}
